package com.itheima.service;

import com.alibaba.fastjson.JSON;
import com.itheima.dao.UserMapper;
import com.itheima.pojo.User;
import com.itheima.util.JedisUtil;
import com.itheima.util.SessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.List;

//业务层
public class UserService {
    private JedisPool pool;

    /**
     * 方法功能: 从redis缓存区中拿到数据
     * 如果缓存区中没有数据则从数据库中拿
     * @return 返回值: String类型的用户集合
     */
    //从jedis或者mysql中拿到数据
    public String finUsers() {
        //利用工具类得到jedis
        Jedis jedis = JedisUtil.getJedis();

        //从缓存中拿到集合
        String userlist = jedis.get("HEIMA_USERLIST");

        //判断在缓存区是否能拿到数据
        if (userlist == null) {
            //从数据库中拿数据
            SqlSession sqlSession = SessionFactoryUtils.getSession();
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<User> users = userMapper.findAllUsers();
            //将从数据库中拿到的数据转换成JSON字符串形式
            userlist = JSON.toJSONString(users);

            //将集合存储到缓存中
            jedis.set("HEIMA_USERLIST",userlist);
            sqlSession.close();
        }
        //返回该集合
        jedis.close();
        return userlist;
    }
}
